package com.woniuxy.pxxt.service.impl;

import com.woniuxy.pxxt.common.result.Result;
import com.woniuxy.pxxt.dao.MenuDao;
import com.woniuxy.pxxt.dto.menu.MenuDto;
import com.woniuxy.pxxt.dto.menu.MenuFatherDto;
import com.woniuxy.pxxt.dto.menu.MenuListDto;
import com.woniuxy.pxxt.entity.Menu;
import com.woniuxy.pxxt.entity.User;
import com.woniuxy.pxxt.service.MenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <P> @Author: ideaAdmin
 * <P> TODO: Class
 * <P> TODO:
 * <P> Date: 2022/3/14:13:30
 * <P> Description:
 */
@Service
public class MenuServiceImpl implements MenuService {
    @Autowired
    private MenuDao menuDao;


    @Override
    public Result findMenu(User user) {
        List<Menu> menus = menuDao.findUserMenu(user);
//        for(int i=0;i < menus.size();i++){
//            Menu menu = menus.get(i);
//            if(menu.getChildren().size() == 1
//                    && !menu.getChildren().get(0).isRequireAuth()){
//                menus.remove(menu);
//            }
//
//            for (Menu menu1: menu.getChildren()){
//                if(menu1.isRequireAuth()){
//                    break;
//                }
//                Menu menu2 = menu.getChildren().get(menu.getChildren().size() - 1);
//                if(menu2 == menu1){
//                    menus.remove(menu);
//                }
//            }
//        }
        return Result.ok(menus);
    }

    @Override
    public Result findMenuByRoleId(Integer roleId) {

        MenuListDto menuListDto = new MenuListDto();
        List<Integer> integers = menuDao.findMenuByRoleId(roleId);
        List<MenuDto> menuAll = menuDao.findMenuAll();
        menuListDto.setMenuDtos(menuAll);
        menuListDto.setChooseId(integers);

        return Result.ok(menuListDto);
    }

    @Override
    @Transactional
    public Result setMenu(Integer roleId, List<Integer> menuIds) {

        //先删除改角色所有角色再添加

        int isOk = menuDao.delByRoleId(roleId);

        if (menuIds.size() < 0) {
            return Result.ok().message("更新数据成功");
        }
        menuDao.setMenu(roleId, menuIds);

        return Result.ok().message("更新数据成功");
    }

    @Override
    public Result findAllFidMenu() {
       List<MenuFatherDto> menuFatherDtos =  menuDao.findAllFidMenu();
        return Result.ok(menuFatherDtos);
    }

    @Override
    @Transactional
    public Result addSonMenu(Menu menu) {
        //增加子集菜单
        int num = menuDao.addSonMenu(menu);
        //int a = 1/0;
        return Result.ok().message("增加成功");
    }

    @Override
    public Result addFatherMenu(Menu menu) {
        int i = menuDao.addFatherMenu(menu);
        return Result.ok().message("增加成功");
    }
}
